Saeid Safaei Loader Logo Saeid Safaei Loader Animated
لطفا شکیبا باشید
0

سعیدصفایی سعیدصفایی

سعید صفایی
آشنایی با مفهوم Function Overriding

Function Overriding

بازنویسی تابع به معنای تعریف مجدد تابع در یک کلاس مشتق‌شده با همان نام و امضای تابع در کلاس پایه است. این ویژگی در برنامه‌نویسی شی‌گرا برای تغییر رفتار توابع به کار می‌رود.

Function Overriding یکی از ویژگی‌های مهم در برنامه‌نویسی شی‌گرا است که به شما این امکان را می‌دهد که یک متد در کلاس فرزند (Subclass) با متدی که در کلاس والد (Superclass) تعریف شده است، بازنویسی (Override) کنید. با استفاده از Function Overriding، می‌توان رفتار یک متد را در کلاس فرزند تغییر داد. این ویژگی باعث می‌شود که متدهای مشابه در کلاس‌های مختلف بتوانند رفتار خاص خود را داشته باشند، حتی اگر نام و پارامترهای مشابهی داشته باشند.

در Function Overriding، متد در کلاس فرزند باید همان امضا (Signature) را داشته باشد که در کلاس والد تعریف شده است. این بدان معناست که نام متد، پارامترهای آن و نوع داده بازگشتی باید مشابه باشند. در صورتی که این شرایط رعایت نشوند، یک خطای کامپایل رخ می‌دهد.

به‌عنوان مثال، در زبان Java، هنگامی که یک متد در کلاس فرزند بازنویسی می‌شود، می‌توانیم رفتار آن را مطابق نیازهای کلاس فرزند تغییر دهیم:

 class Animal {
public void sound() {
System.out.println("Animal makes a sound");
} } class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
} } public class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myDog = new Dog();


myAnimal.sound(); // خروجی: Animal makes a sound
myDog.sound();
// خروجی: Dog barks
} }

در این مثال، کلاس Dog متد sound را از کلاس Animal بازنویسی (Override) کرده است. در نتیجه، زمانی که متد sound برای شی myDog فراخوانی می‌شود، پیامی که مربوط به سگ است چاپ می‌شود.

ویژگی Function Overriding معمولاً در زمانی که می‌خواهیم رفتار یک متد را در کلاس‌های فرزند با توجه به ویژگی‌ها یا نیازهای خاص تغییر دهیم، استفاده می‌شود. به‌عنوان مثال، اگر یک برنامه برای مدیریت حیوانات داشته باشیم، ممکن است بخواهیم که همه حیوانات صدای خاص خود را تولید کنند، ولی هر گونه خاصی از حیوانات (مانند سگ‌ها، گربه‌ها، پرندگان و ...) صدای مخصوص به خود را داشته باشند.

در زبان C++ نیز Function Overriding به‌طور مشابه پیاده‌سازی می‌شود. در C++ برای بازنویسی یک متد در کلاس فرزند، معمولاً از کلمه‌کلیدی virtual در کلاس والد و override در کلاس فرزند استفاده می‌کنیم:

 #include <iostream> using namespace std;  class Animal { public:
virtual void sound() {
cout << "Animal makes a sound" << endl;
} }; class Dog : public Animal { public:
void sound() override {
cout << "Dog barks" << endl;
} }; int main() {
Animal* myAnimal = new Animal();
Animal* myDog = new Dog();

myAnimal->sound(); // خروجی: Animal makes a sound
myDog->sound();
// خروجی: Dog barks

delete myAnimal;
delete myDog;

return 0; }

در این مثال، در C++ نیز مشابه به Java، کلمه‌کلیدی virtual برای تعیین اینکه متد در کلاس والد می‌تواند بازنویسی شود استفاده شده است. همچنین در کلاس فرزند، کلمه‌کلیدی override استفاده می‌شود تا کامپایلر بداند که این متد قرار است متد والد را بازنویسی کند.

یکی از مزایای استفاده از Function Overriding این است که به شما این امکان را می‌دهد که از ویژگی polymorphism (چندریختی) در برنامه‌نویسی شی‌گرا استفاده کنید. این ویژگی به شما این امکان را می‌دهد که از متدهای یکسان برای انواع مختلف اشیاء استفاده کنید، در حالی که هر شیء می‌تواند پیاده‌سازی خاص خود را از آن متد داشته باشد.

به‌طور کلی، Function Overriding ابزاری قدرتمند در برنامه‌نویسی شی‌گرا است که به شما این امکان را می‌دهد که رفتار متدها را در کلاس‌های فرزند تغییر دهید. این ویژگی در طراحی کد و استفاده از مفهوم چندریختی (Polymorphism) بسیار مفید است. برای یادگیری مفاهیم مشابه و مطالعه مقالات بیشتر، می‌توانید از سایت saeidsafaei.ir و مقالات محمد سعید صفایی استفاده کنید.

اسلاید آموزشی

بخش پنجم برنامه نویسی مقدماتی (توابع-قسمت اول)

بخش پنجم برنامه نویسی مقدماتی (توابع-قسمت اول)
مبانی کامپیوتر و برنامه سازی

در این مبحث، به بررسی انواع توابع، شامل توابع کتابخانه‌ای و توابع ساخت کاربر پرداخته می‌شود و نحوه اعلان، تعریف و استفاده از آن‌ها مورد بحث قرار می‌گیرد. همچنین، به مفاهیم متغیرهای محلی و توابع محلی، تفاوت آرگومان و پارامتر و نحوه عملکرد تابع اصلی پرداخته خواهد شد. هدف این جلسه، آشنایی با نحوه استفاده از توابع در برنامه‌نویسی و درک دقیق ارتباطات میان متغیرها و توابع است.

مقالات آموزشی برای آشنایی با اصطلاحات دنیای کامپیوتر

یک بیت کوچک‌ترین واحد ذخیره‌سازی داده است که تنها می‌تواند یکی از دو مقدار 0 یا 1 را نگهداری کند.

جستجوی دودویی یک الگوریتم جستجو است که داده‌های مرتب‌شده را به نصف تقسیم می‌کند و در هر مرحله تنها نیمی از داده‌ها را بررسی می‌کند.

اتصال 5G به نسل پنجم ارتباطات بی‌سیم اشاره دارد که سرعت و ظرفیت شبکه را به طور قابل توجهی افزایش می‌دهد.

روش تخصیص و مدیریت آدرس‌های IP که محدودیت‌های سیستم کلاس‌های سنتی را حذف می‌کند.

تبدیل عدد از مبنای ده به دودویی که از روش تقسیم متوالی برای تقسیم عدد بر 2 و جمع‌بندی باقی‌مانده‌ها استفاده می‌شود.

یکی از زبان‌های برنامه‌نویسی قدیمی است که در دهه 1960 برای توسعه الگوریتم‌ها استفاده می‌شد. برخی ویژگی‌های آن الهام‌بخش زبان‌های مدرن‌تر مانند C و Java بوده است.

آرایه پویا آرایه‌ای است که می‌توان اندازه آن را در زمان اجرا تغییر داد. این نوع آرایه‌ها به حافظه به صورت داینامیک تخصیص می‌دهند.

نمادهای شروع و پایان در فلوچارت به صورت بیضی نمایش داده می‌شوند و برای تعیین ابتدا و انتهای یک فرآیند یا الگوریتم استفاده می‌شوند.

اتصال یا پورتی که برای ارسال داده‌ها از یک دستگاه به دستگاه دیگر یا شبکه بالادستی استفاده می‌شود.

لیست پیوندی دوطرفه یک نوع خاص از لیست پیوندی است که هر عنصر در آن به دو عنصر قبلی و بعدی خود اشاره دارد.

نوعی سیستم که اطلاعات کامل از جزئیات عملکرد آن در دسترس است و به کاربر اجازه می‌دهد تا عملکرد درونی آن را بررسی و تحلیل کند.

عملگر مساوی برای مقایسه دو مقدار استفاده می‌شود تا مشخص شود آیا آن‌ها برابرند یا خیر. در برنامه‌نویسی از آن برای مقایسه و انتساب داده‌ها استفاده می‌شود.

مفسر برنامه‌ای است که کدهای نوشته شده را به صورت خط به خط اجرا می‌کند.

پارامترها مقادیری هستند که به یک تابع داده می‌شوند و به عنوان ورودی تابع عمل می‌کنند.

متد مشابه به تابع است اما معمولاً در زبان‌های شی‌گرا استفاده می‌شود و متعلق به یک کلاس خاص است. متدها می‌توانند بر روی داده‌های شی عمل کنند.

تبدیل عدد از مبنای هشت به مبنای ده که شامل محاسبه وزن هر رقم و جمع آن‌ها است.

سرور کامپیوتری است که خدماتی را به دیگر سیستم‌ها یا کاربران ارائه می‌دهد. سرورها در شبکه‌ها برای ذخیره‌سازی داده‌ها و پاسخگویی به درخواست‌ها استفاده می‌شوند.

شبکه‌بندی فرآیند اتصال چندین دستگاه به یکدیگر است تا اطلاعات بین آن‌ها تبادل شود.

توابع کتابخانه‌ای به توابعی اطلاق می‌شود که از پیش در زبان‌های برنامه‌نویسی تعریف شده‌اند و در هر برنامه می‌توان از آن‌ها استفاده کرد.

زبان‌های برنامه‌نویسی سطح پایین به زبان‌هایی اطلاق می‌شوند که به کد ماشین نزدیک‌ترند و معمولاً برای تعامل مستقیم با سخت‌افزار استفاده می‌شوند.

انتقال داده به نحوی که توسط تمام دستگاه‌های موجود در شبکه دریافت شود.

آرایه چندبعدی به آرایه‌ای اطلاق می‌شود که هر عنصر آن یک آرایه چندبعدی است. این آرایه‌ها برای ذخیره داده‌هایی با ابعاد مختلف مناسب هستند.

دید ماشین به فناوری‌هایی اطلاق می‌شود که به دستگاه‌ها این امکان را می‌دهند تا از طریق دوربین‌ها و حسگرها محیط خود را درک کنند.

پایگاه داده مجموعه‌ای از داده‌های ذخیره‌شده به صورت ساختارمند است که به راحتی می‌توان به آن‌ها دسترسی داشت و از آن‌ها استفاده کرد.

محاسبات عصبی‌شکل به محاسباتی گفته می‌شود که مدل‌سازی مغز انسان را تقلید می‌کند تا راه‌حل‌هایی مشابه سیستم‌های عصبی طبیعی ایجاد کند.

چندریختی به این معنا است که یک متد یا تابع می‌تواند به گونه‌های مختلفی رفتار کند و بسته به نوع داده ورودی خود، رفتارهای مختلفی از خود نشان دهد.

فرآیندی که در آن هر لایه از مدل OSI اطلاعات کنترلی را به داده‌ها اضافه می‌کند تا آن‌ها را برای لایه پایین‌تر آماده کند.

چاپ سه‌بعدی به فرآیند ساخت اشیاء فیزیکی از مدل‌های دیجیتال با استفاده از مواد مختلف اشاره دارد.

ربات‌های جمعی به استفاده از ربات‌ها برای انجام کارهای گروهی اشاره دارند که در آن‌ها ربات‌ها با همکاری یکدیگر وظایف را انجام می‌دهند.

یال یک اتصال بین دو گره در گراف است که ارتباط یا وابستگی بین آن‌ها را نشان می‌دهد.

کامپیوترهای بزرگ که می‌توانند صدها یا هزاران کاربر را به صورت همزمان پشتیبانی کنند و برای سازمان‌های بزرگ مناسب هستند.

فناوری پوشیدنی به دستگاه‌هایی اطلاق می‌شود که به کاربران امکان می‌دهند تا به‌طور پیوسته داده‌ها را جمع‌آوری و تجزیه و تحلیل کنند.

دیفای به سیستم‌های مالی غیرمتمرکز اشاره دارد که با استفاده از فناوری بلاکچین ایجاد می‌شوند.

امنیت بیومتریک به استفاده از ویژگی‌های بیولوژیکی برای احراز هویت افراد و محافظت از داده‌ها اشاره دارد.

معامله‌گری الگوریتمی به استفاده از الگوریتم‌ها برای انجام معاملات مالی با استفاده از داده‌های تاریخی و پیش‌بینی روندها اطلاق می‌شود.

بکشید مشاهده بستن پخش
Saeid Safaei Scroll Top
0%